package org.example.supplychain.service;

import org.example.supplychain.domain.User;
import org.example.supplychain.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    /**
     * 添加用户
     *
     * @param user 用户
     */
    public void addUser(User user) {
        userMapper.addUser(user);
    }

    /**
     * 通过用户名删除用户
     *
     * @param userName 用户名
     */
    public void deleteUserByUserName(String userName) {
        userMapper.deleteUserByUserName(userName);
    }

    /**
     * 更新用户信息
     *
     * @param user 新的用户信息
     */
    public void updateUser(User user) {
        userMapper.updateUser(user);
    }

    /**
     * 通过用户名获取用户信息
     *
     * @param userName 用户名
     * @return 用户
     */
    public User getUserByUserName(String userName) {
        return userMapper.getUserByUserName(userName);
    }

    /**
     * 获取所有用户
     *
     * @return 用户列表
     */
    public List<User> getAllUsers() {
        return userMapper.getAllUsers();
    }

    /**
     * 根据传入参数新建用户
     * @param userName
     * @param password
     * @param nickName
     * @param phone
     * @param role
     */
    public void createUser(String userName, String password, String nickName, String phone, String role){
        // TODO: 2024/6/12 根据传入参数新建用户
        User user = new User();

        user.setUserName(userName);
        user.setPassword(password);
        user.setNickname(nickName);
        user.setPhone(phone);
        user.setRole(role);

        Date date = new Date();
        user.setCreateDate(date);

        addUser(user);

    }

    /**
     * 根据传入参数修改用户
     * @param userName
     * @param password
     * @param nickName
     * @param phone
     * @param role
     */
    public void updateUser(String userName, String password, String nickName, String phone, String role){
        // TODO: 2024/6/12 根据传入参数修改用户信息
        User user = getUserByUserName(userName);

        user.setPassword(password);
        user.setNickname(nickName);
        user.setPhone(phone);
        user.setRole(role);
    }

    /**
     * 根据传入参数验证用户名密码是否正确
     * @param userName
     * @param password
     * @return
     */
    public boolean isUser(String userName, String password){
        // TODO: 2024/6/12 验证密码是否正确

        User user = getUserByUserName(userName);
        if(user.getPassword().equals(password)){
            return true;
        }
        return  false;


    }

    /**
     * 验证传入参数是否为管理员的账户和密码
     * @param userName
     * @param password
     * @return
     */
    public boolean isManager(String userName, String password){
        // TODO: 2024/6/12 判断传入用户密码是否正确，正确后再验证是否为管理员
        User user = getUserByUserName(userName);

        if(isUser(userName,password)){
            if(user.getRole().equals("系统管理员")){
                return true;
            }
        }
        return false;
    }
}
